{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Fine-tune TrOCR on IAM Handwriting Database using Seq2SeqTrainer.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "mount_file_id": "1AiB-bjFpcWXp3eRsfXjWFC8-RpvHVQJS",
      "authorship_tag": "ABX9TyMn8k9j37HGBCAplZPQJ1Jp",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/TrOCR/Fine_tune_TrOCR_on_IAM_Handwriting_Database_using_Seq2SeqTrainer.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XZTfJ2fy7Bxu"
      },
      "source": [
        "## Fine-tune TrOCR on the IAM Handwriting Database\n",
        "\n",
        "In this notebook, we are going to fine-tune a pre-trained TrOCR model on the [IAM Handwriting Database](https://fki.tic.heia-fr.ch/databases/iam-handwriting-database), a collection of annotated images of handwritten text.\n",
        "\n",
        "We will do this using the new `VisionEncoderDecoderModel` class, which can be used to combine any image Transformer encoder (such as ViT, BEiT) with any text Transformer as decoder (such as BERT, RoBERTa, GPT-2). TrOCR is an instance of this, as it has an encoder-decoder architecture, with the weights of the encoder initialized from a pre-trained BEiT, and the weights of the decoder initialized from a pre-trained RoBERTa. The weights of the cross-attention layer were randomly initialized, before the authors pre-trained the model further on millions of (partially synthetic) annotated images of handwritten text. \n",
        "\n",
        "This figure gives a good overview of the model (from the original paper):\n",
        "\n",
        "![Schermafbeelding 2021-10-26 om 16.09.25.png]()\n",
        "\n",
        "* TrOCR paper: https://arxiv.org/abs/2109.10282\n",
        "* TrOCR documentation: https://huggingface.co/transformers/master/model_doc/trocr.html\n",
        "\n",
        "\n",
        "Note that Patrick also wrote a very good [blog post](https://huggingface.co/blog/warm-starting-encoder-decoder) on warm-starting encoder-decoder models (which is what the TrOCR authors did). This blog post was very helpful for me to create this notebook. \n",
        "\n",
        "We will fine-tune the model using the Seq2SeqTrainer, which is a subclass of the 🤗 Trainer that lets you compute generative metrics such as BLEU, ROUGE, etc by doing generation (i.e. calling the `generate` method) inside the evaluation loop.\n",
        "\n",
        "\n",
        "\n",
        "## Set-up environment\n",
        "\n",
        "First, let's install the required libraries:\n",
        "* Transformers (for the TrOCR model)\n",
        "* Datasets & Jiwer (for the evaluation metric)\n",
        "\n",
        "We will not be using HuggingFace Datasets in this notebook for data preprocessing, we will just create a good old basic PyTorch Dataset."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "pkSzlRJq68tH"
      },
      "source": [
        "!pip install -q transformers"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "a8eZ6PWTHriw"
      },
      "source": [
        "!pip install -q datasets jiwer"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lsTaPrDR7My2"
      },
      "source": [
        "## Prepare data\n",
        "\n",
        "We first download the data. Here, I'm just using the IAM test set, as this was released by the TrOCR authors in the unilm repository. It can be downloaded from [this page](https://github.com/microsoft/unilm/tree/master/trocr). \n",
        "\n",
        "Let's make a [regular PyTorch dataset](https://pytorch.org/tutorials/beginner/basics/data_tutorial.html). We first create a Pandas dataframe with 2 columns. Each row consists of the file name of an image, and the corresponding text."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "id": "KkHqJw-W9Abl",
        "outputId": "0db0a26a-4749-4b28-cd6f-fb355ad6aaf5"
      },
      "source": [
        "import pandas as pd\n",
        "\n",
        "df = pd.read_fwf('/content/drive/MyDrive/TrOCR/Tutorial notebooks/IAM/gt_test.txt', header=None)\n",
        "df.rename(columns={0: \"file_name\", 1: \"text\"}, inplace=True)\n",
        "del df[2]\n",
        "# some file names end with jp instead of jpg, let's fix this\n",
        "df['file_name'] = df['file_name'].apply(lambda x: x + 'g' if x.endswith('jp') else x)\n",
        "df.head()"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>file_name</th>\n",
              "      <th>text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>c04-110-00.jpg</td>\n",
              "      <td>Become a success with a disc and hey presto ! ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>c04-110-01.jpg</td>\n",
              "      <td>assuredness \" Bella Bella Marie \" ( Parlophone...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>c04-110-02.jpg</td>\n",
              "      <td>I don't think he will storm the charts with th...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>c04-110-03.jpg</td>\n",
              "      <td>CHRIS CHARLES , 39 , who lives in Stockton-on-...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>c04-116-00.jpg</td>\n",
              "      <td>He is also a director of a couple of garages ....</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        file_name                                               text\n",
              "0  c04-110-00.jpg  Become a success with a disc and hey presto ! ...\n",
              "1  c04-110-01.jpg  assuredness \" Bella Bella Marie \" ( Parlophone...\n",
              "2  c04-110-02.jpg  I don't think he will storm the charts with th...\n",
              "3  c04-110-03.jpg  CHRIS CHARLES , 39 , who lives in Stockton-on-...\n",
              "4  c04-116-00.jpg  He is also a director of a couple of garages ...."
            ]
          },
          "metadata": {},
          "execution_count": 3
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qJlVYVal9Ojy"
      },
      "source": [
        "We split up the data into training + testing, using sklearn's `train_test_split` function."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6qLVT1TPN8Nt"
      },
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "\n",
        "train_df, test_df = train_test_split(df, test_size=0.2)\n",
        "# we reset the indices to start from zero\n",
        "train_df.reset_index(drop=True, inplace=True)\n",
        "test_df.reset_index(drop=True, inplace=True)"
      ],
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fwlEBh6B9RTE"
      },
      "source": [
        "Each element of the dataset should return 2 things:\n",
        "* `pixel_values`, which serve as input to the model.\n",
        "* `labels`, which are the `input_ids` of the corresponding text in the image.\n",
        "\n",
        "We use `TrOCRProcessor` to prepare the data for the model. `TrOCRProcessor` is actually just a wrapper around a `ViTFeatureExtractor` (which can be used to resize + normalize images) and a `RobertaTokenizer` (which can be used to encode and decode text into/from `input_ids`). "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qO5Q8WYp7DLx"
      },
      "source": [
        "import torch\n",
        "from torch.utils.data import Dataset\n",
        "from PIL import Image\n",
        "\n",
        "class IAMDataset(Dataset):\n",
        "    def __init__(self, root_dir, df, processor, max_target_length=128):\n",
        "        self.root_dir = root_dir\n",
        "        self.df = df\n",
        "        self.processor = processor\n",
        "        self.max_target_length = max_target_length\n",
        "\n",
        "    def __len__(self):\n",
        "        return len(self.df)\n",
        "\n",
        "    def __getitem__(self, idx):\n",
        "        # get file name + text \n",
        "        file_name = self.df['file_name'][idx]\n",
        "        text = self.df['text'][idx]\n",
        "        # prepare image (i.e. resize + normalize)\n",
        "        image = Image.open(self.root_dir + file_name).convert(\"RGB\")\n",
        "        pixel_values = self.processor(image, return_tensors=\"pt\").pixel_values\n",
        "        # add labels (input_ids) by encoding the text\n",
        "        labels = self.processor.tokenizer(text, \n",
        "                                          padding=\"max_length\", \n",
        "                                          max_length=self.max_target_length).input_ids\n",
        "        # important: make sure that PAD tokens are ignored by the loss function\n",
        "        labels = [label if label != self.processor.tokenizer.pad_token_id else -100 for label in labels]\n",
        "\n",
        "        encoding = {\"pixel_values\": pixel_values.squeeze(), \"labels\": torch.tensor(labels)}\n",
        "        return encoding"
      ],
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yzL7C60c-v-B"
      },
      "source": [
        "Let's initialize the training and evaluation datasets:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KIa78c2W8uT9"
      },
      "source": [
        "from transformers import TrOCRProcessor\n",
        "\n",
        "processor = TrOCRProcessor.from_pretrained(\"microsoft/trocr-base-handwritten\")\n",
        "train_dataset = IAMDataset(root_dir='/content/drive/MyDrive/TrOCR/Tutorial notebooks/IAM/image/',\n",
        "                           df=train_df,\n",
        "                           processor=processor)\n",
        "eval_dataset = IAMDataset(root_dir='/content/drive/MyDrive/TrOCR/Tutorial notebooks/IAM/image/',\n",
        "                           df=test_df,\n",
        "                           processor=processor)"
      ],
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PiwZLbMeLCfo",
        "outputId": "61ebe4b6-4bcd-411e-dcf3-ce669bf73246"
      },
      "source": [
        "print(\"Number of training examples:\", len(train_dataset))\n",
        "print(\"Number of validation examples:\", len(eval_dataset))"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Number of training examples: 2332\n",
            "Number of validation examples: 583\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7p8JfQrx-6EM"
      },
      "source": [
        "Let's verify an example from the training dataset:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rwBNrfD78RA7",
        "outputId": "6dd081e0-d868-460a-9e81-2c48de7a09d3"
      },
      "source": [
        "encoding = train_dataset[0]\n",
        "for k,v in encoding.items():\n",
        "  print(k, v.shape)"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "pixel_values torch.Size([3, 384, 384])\n",
            "labels torch.Size([128])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lN-3pf6T_uRe"
      },
      "source": [
        "We can also check the original image and decode the labels:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 102
        },
        "id": "QzgOFgD4_7Kw",
        "outputId": "b7aad103-2dbc-4205-bf16-d62a74023354"
      },
      "source": [
        "image = Image.open(train_dataset.root_dir + train_df['file_name'][0]).convert(\"RGB\")\n",
        "image"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<PIL.Image.Image image mode=RGB size=1535x128 at 0x7FC06BEEBAD0>"
            ]
          },
          "metadata": {},
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "vMtfkDia-8tQ",
        "outputId": "0bc47221-61d4-4c54-9cdd-e389a16c7445"
      },
      "source": [
        "labels = encoding['labels']\n",
        "labels[labels == -100] = processor.tokenizer.pad_token_id\n",
        "label_str = processor.decode(labels, skip_special_tokens=True)\n",
        "print(label_str)"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "my mind. \" This would be as good a place\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XxU7TfoYBvg0"
      },
      "source": [
        "## Train a model\n",
        "\n",
        "Here, we initialize the TrOCR model from its pretrained weights. Note that the weights of the language modeling head are already initialized from pre-training, as the model was already trained to generate text during its pre-training stage. Refer to the paper for details."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bRhvTRrGBIfy",
        "outputId": "de96977c-242a-4d2c-9bdf-7546b3349b74"
      },
      "source": [
        "from transformers import VisionEncoderDecoderModel\n",
        "\n",
        "model = VisionEncoderDecoderModel.from_pretrained(\"microsoft/trocr-base-stage1\")"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Some weights of VisionEncoderDecoderModel were not initialized from the model checkpoint at microsoft/trocr-base-stage1 and are newly initialized: ['encoder.pooler.dense.weight', 'encoder.pooler.dense.bias']\n",
            "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UqNELu3cQix5"
      },
      "source": [
        "Importantly, we need to set a couple of attributes, namely:\n",
        "* the attributes required for creating the `decoder_input_ids` from the `labels` (the model will automatically create the `decoder_input_ids` by shifting the `labels` one position to the right and prepending the `decoder_start_token_id`, as well as replacing ids which are -100 by the pad_token_id)\n",
        "* the vocabulary size of the model (for the language modeling head on top of the decoder)\n",
        "* beam-search related parameters which are used when generating text."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "sNNT1XS_CMgl"
      },
      "source": [
        "# set special tokens used for creating the decoder_input_ids from the labels\n",
        "model.config.decoder_start_token_id = processor.tokenizer.cls_token_id\n",
        "model.config.pad_token_id = processor.tokenizer.pad_token_id\n",
        "# make sure vocab size is set correctly\n",
        "model.config.vocab_size = model.config.decoder.vocab_size\n",
        "\n",
        "# set beam search parameters\n",
        "model.config.eos_token_id = processor.tokenizer.sep_token_id\n",
        "model.config.max_length = 64\n",
        "model.config.early_stopping = True\n",
        "model.config.no_repeat_ngram_size = 3\n",
        "model.config.length_penalty = 2.0\n",
        "model.config.num_beams = 4"
      ],
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Lt3G4Ts4-3RL"
      },
      "source": [
        "Next, we can define some training hyperparameters by instantiating the `training_args`. Note that there are many more parameters, all of which can be found in the [documentation](https://huggingface.co/transformers/main_classes/trainer.html#seq2seqtrainingarguments). You can for example decide what the batch size is for training/evaluation, whether to use mixed precision training (lower memory), the frequency at which you want to save the model, etc."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "o1G_rkDBzwid"
      },
      "source": [
        "from transformers import Seq2SeqTrainer, Seq2SeqTrainingArguments\n",
        "\n",
        "training_args = Seq2SeqTrainingArguments(\n",
        "    predict_with_generate=True,\n",
        "    evaluation_strategy=\"steps\",\n",
        "    per_device_train_batch_size=8,\n",
        "    per_device_eval_batch_size=8,\n",
        "    fp16=True, \n",
        "    output_dir=\"./\",\n",
        "    logging_steps=2,\n",
        "    save_steps=1000,\n",
        "    eval_steps=200,\n",
        ")"
      ],
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "nV6KY53xvOgC"
      },
      "source": [
        "We will evaluate the model on the Character Error Rate (CER), which is available in HuggingFace Datasets (see [here](https://huggingface.co/metrics/cer))."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "yoXD3_P10DD4"
      },
      "source": [
        "from datasets import load_metric\n",
        "\n",
        "cer_metric = load_metric(\"cer\")"
      ],
      "execution_count": 14,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8G0R0sPFvfqT"
      },
      "source": [
        "The compute_metrics function takes an `EvalPrediction` (which is a NamedTuple) as input, and should return a dictionary. The model will return an EvalPrediction at evaluation, which consists of 2 things:\n",
        "* predictions: the predictions by the model.\n",
        "* label_ids: the actual ground-truth labels."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Y36AcnvP0OZw"
      },
      "source": [
        "def compute_metrics(pred):\n",
        "    labels_ids = pred.label_ids\n",
        "    pred_ids = pred.predictions\n",
        "\n",
        "    pred_str = processor.batch_decode(pred_ids, skip_special_tokens=True)\n",
        "    labels_ids[labels_ids == -100] = processor.tokenizer.pad_token_id\n",
        "    label_str = processor.batch_decode(labels_ids, skip_special_tokens=True)\n",
        "\n",
        "    cer = cer_metric.compute(predictions=pred_str, references=label_str)\n",
        "\n",
        "    return {\"cer\": cer}"
      ],
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vujH5mZ4-MXS"
      },
      "source": [
        "Let's train! We also provide the `default_data_collator` to the Trainer, which is used to batch together examples.\n",
        "\n",
        "Note that evaluation takes quite a long time, as we're using beam search for decoding, which requires several forward passes for a given example."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 729
        },
        "id": "mcQMbxi10SDm",
        "outputId": "3750a131-4521-4d24-ccf6-b89622d0757b"
      },
      "source": [
        "from transformers import default_data_collator\n",
        "\n",
        "# instantiate trainer\n",
        "trainer = Seq2SeqTrainer(\n",
        "    model=model,\n",
        "    tokenizer=processor.feature_extractor,\n",
        "    args=training_args,\n",
        "    compute_metrics=compute_metrics,\n",
        "    train_dataset=train_dataset,\n",
        "    eval_dataset=eval_dataset,\n",
        "    data_collator=default_data_collator,\n",
        ")\n",
        "trainer.train()"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "Using amp fp16 backend\n",
            "***** Running training *****\n",
            "  Num examples = 2332\n",
            "  Num Epochs = 3\n",
            "  Instantaneous batch size per device = 8\n",
            "  Total train batch size (w. parallel, distributed & accumulation) = 8\n",
            "  Gradient Accumulation steps = 1\n",
            "  Total optimization steps = 876\n",
            "/usr/local/lib/python3.7/dist-packages/transformers/modeling_utils.py:384: UserWarning: Could not estimate the number of tokens of the input, floating-point operations will not be computed\n",
            "  \"Could not estimate the number of tokens of the input, floating-point operations will not be computed\"\n",
            "/usr/local/lib/python3.7/dist-packages/transformers/trainer.py:1357: FutureWarning: Non-finite norm encountered in torch.nn.utils.clip_grad_norm_; continuing anyway. Note that the default behavior will change in a future release to error out if a non-finite total norm is encountered. At that point, setting error_if_nonfinite=false will be required to retain the old behavior.\n",
            "  args.max_grad_norm,\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "      \n",
              "      <progress value='876' max='876' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      [876/876 54:44, Epoch 3/3]\n",
              "    </div>\n",
              "    <table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>Step</th>\n",
              "      <th>Training Loss</th>\n",
              "      <th>Validation Loss</th>\n",
              "      <th>Cer</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>200</td>\n",
              "      <td>1.626500</td>\n",
              "      <td>1.521195</td>\n",
              "      <td>0.192043</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <td>400</td>\n",
              "      <td>1.040800</td>\n",
              "      <td>1.427985</td>\n",
              "      <td>0.201547</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <td>600</td>\n",
              "      <td>0.799300</td>\n",
              "      <td>1.019927</td>\n",
              "      <td>0.107541</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <td>800</td>\n",
              "      <td>0.625300</td>\n",
              "      <td>0.824039</td>\n",
              "      <td>0.092113</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table><p>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "***** Running Evaluation *****\n",
            "  Num examples = 583\n",
            "  Batch size = 8\n",
            "***** Running Evaluation *****\n",
            "  Num examples = 583\n",
            "  Batch size = 8\n",
            "***** Running Evaluation *****\n",
            "  Num examples = 583\n",
            "  Batch size = 8\n",
            "***** Running Evaluation *****\n",
            "  Num examples = 583\n",
            "  Batch size = 8\n",
            "\n",
            "\n",
            "Training completed. Do not forget to share your model on huggingface.co/models =)\n",
            "\n",
            "\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "TrainOutput(global_step=876, training_loss=1.3226627340055492, metrics={'train_runtime': 3288.4572, 'train_samples_per_second': 2.127, 'train_steps_per_second': 0.266, 'total_flos': 0.0, 'train_loss': 1.3226627340055492, 'epoch': 3.0})"
            ]
          },
          "metadata": {},
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "q8tduj2fBGQK"
      },
      "source": [
        "## Inference\n",
        "\n",
        "Note that after training, you can easily load the model using the .`from_pretrained(output_dir)` method.\n",
        "\n",
        "For inference on new images, I refer to my inference notebook, that can also be found in my [Transformers Tutorials repository](https://github.com/NielsRogge/Transformers-Tutorials) on Github."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WkaVFYTal6vR"
      },
      "source": [
        ""
      ],
      "execution_count": 16,
      "outputs": []
    }
  ]
}